<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
    <link rel="stylesheet" type="text/css" media="all" href="DefaultCSS/s.css">
</head>
<body class="template">
<div id="container">
<div id="header" style="background:url(DefaultCSS/img/bg_idea_big.jpg)">
    <h1>Database Navigator</h1>
</div>
<div class="introduction">
    <span class="intelliJIDEA">Database development, scripting and navigation tool (for Oracle)</span><br><br>
    This product aims to add extensive database development and maintenance capabilities to the IntelliJ
    IDEA development environment. Along with a qualified and IDE-compliant SQL editor, it provides database connection management,
    script execution support, database objects browsing, data and code editor, support for database compiler operations,
    as well as various navigation capabilities between all its components.<br><br>
    The tool is currently only supporting Oracle databases, and has been tested only on MS Windows environments.
</div>

<div class="section">
<h2>Features overview</h2>

<div class="section">
    <h3>Script editor</h3>
    <i>Script editor providing advanced editing capabilities</i>
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>SQL and PL/SQL token highlighting (configurable in the "Colors & Fonts" section)</li>
        <li>Code formatting, folding and bracket matching support</li>
        <li>Qualified code completion, suggesting only suitable variants for the scope and cursor position</li>
        <li>Two configurable levels of code completion, supporting Basic and SmartType completion</li>
        <li>Error highlighting for incomplete statements or invalid references to database entities</li>
        <li>Basic structure projection in the "Structure" tool window, displaying the list of executable statements</li>
    </ul>

    <h3>Database connection management</h3>
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>Flexible connection administration - connections are configurable on project or module scope</li>
        <li>Connection file mapping - database script files can be associated to certain database connection
        for providing advanced editing capabilities like code completion, validation and navigation</li>
        <li>Connection pooling - support for concurrent database access and for dedicated connectivity</li>
    </ul>

    <h3>Statement execution engine</h3>
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>Statement execution trigger at editor gutter</li>
        <li>Navigate to result feature - sticky linkage between statement and result window,
            providing back and forth navigation even if the file is being edited</li>
        <li>Execution messages tool window (displaying execution errors or confirmations)</li>
        <li>Tabular result panels, for statement executions with data result</li>
    </ul>

    <h3>Database object browser</h3>
    <i>Tool window displaying available connections and their data models</i>
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>Tree-wise visualization of available database connections and hierarchical objects structure</li>
        <li>Navigate to entity feature (clicking on a resolved identifier in the editor will trigger navigation
            to respective database entity in the browser)</li>
        <li>Navigation capability between linked entities (e.g. Column to Constraints)</li>
        <li>Speed search feature, for locating objects by name</li>
    </ul>

    <h3>Data editor</h3>
    <i>Tabular dataset editor for manipulating data in tables and editable views</i>
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>Complex cell editors for several data types (data choosers, calendar, large text editor)</li>
        <li>Data sorting and filtering capabilities</li>
        <li>Gutter highlighting - inserted, changed or removed entries are emphasized in the editor gutter</li>
        <li>Input validation and error highlighting - erroneous inputs are leniently notified (light error pop-up)</li>
        <li>Structure projection in the default IDE "Structure" tool window</li>
    </ul>

    <h3>Database code editor</h3>
    <i>Highlighted code editor for program-objects (e.g. functions)</i>
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>Language highlighting for SQL and PL/SQL (configurable in the "Colors & Fonts" section)
        <li>Show changes facility - visualization of local changes and changes against database version
        <li>Basic team coding support - prevent blind overwriting in case of concurrent editing
        <li>DDL file mapping - locating and aggregating project ddl-files with the database objects being edited
        <li>Compiler support - database compiler messages are displayed in the messaging box of the
            execution engine, providing "navigate to code" capability
    </ul>
</div>

<h2>Current critical limitations</h2>

<div class="ijProcedureSteps">
    (as of 20th of November 2007)
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>SQL language definition is only to 30% completed (<i>select</i> and <i>alter</i> statements)</li>
        <li>Browser tree is not able to refresh (e.g. if objects added, removed or changed)</li>
        <li>Data editor does not provide support for large objects (e.g. BLOB, CLOB)</li>
        <li>PL/SQL editors do not provide advanced editing capabilities besides of syntax highlighting (no code completion, folding, navigation...)</li>
        <li>"Execute as script" from editor is not supported</li>
        <li>Data editor does not provide data filtering capabilities</li>
        <li>Overall limitations of tool configurability</li>
    </ul>
</div>

<h2>On the pipe</h2>

<div class="ijProcedureSteps">
     <ul style="list-style-image:url(DefaultCSS/img/blue_romb_blt.png)">
        <li>PL/SQL parser (for advanced editing / navigation)</li>
        <li>Creation and refactoring wizards for database objects</li>
        <li>"Find usages" feature for database objects</li>
        <li>Execution engine for program-objects (e.g. procedures, functions)</li>
        <li>Usability enhancements for data editor</li>
        <li>Database module - IDE project module for organizing database files (sql scripts, ddl files)</li>
    </ul>
</div>


<h2>Why only Oracle?</h2>
<dl>
    <dd>
        <i> Even if started with the intention of generically supporting all known databases, this tool ended up supporting only Oracle.
            The default JDBC layer is too generic to cover each database particularity, which made necessary implementing a custom
            data dictionary layer for supporting the database operations this tool is supposed to offer.
            This custom layer is kept conceptually very generic and implemented for now only for Oracle, but can be theoretically implemented for any other database.
            Nevertheless, the support for other databases will have to wait until this custom API reaches a stable and mature state.
        </i>
    </dd>
</dl>

</div>
</div>
</body>
</html>